import { mixin } from '../../utils/mixin'
// 获取应用实例
const app = getApp()
Page({
  data: {
    // 手机号
    mobile: '13988228622',
    // 验证码
    code: '',
    // 是否显示倒计时组件
    isShow: false
  },
  behaviors: [mixin],
  onLoad(params) {
    // 存储回跳地址
    // 说明：this是个对象，可以追加属性存值
    this.redirectUrl = params.redirectUrl
    console.log('回调地址：', this.redirectUrl)

  },
  // 验证手机号
  /**
   * 
   * @param {*} mobile 手机号
   * @returns 
   */
  validMobile(mobile) {
    const reg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
    // const { mobile } = this.data
    const result = reg.test(mobile)
    if (!result) {
      // 提示手机号格式错误
      wx.utils.toast('手机号格式错误', 'error')
    }
    // 返回校验结果：true 校验通过 ｜ false 校验失败
    return result
  },
  // 验证码校验
  /**
   * 
   * @param {*} code 验证码
   */
  validCode(code) {
    const reg = /^\d{6}$/
    const result = reg.test(code)
    if (!result) {
      // 提示格式错误
      wx.utils.toast('验证码格式错误', 'error')
    }
    // 返回校验结果：true 校验通过 ｜ false 校验失败
    return result
  },
  // 获取验证码
  async getCode() {
    /**
     * 1. 获取用户输入的手机号并校验格式
     * 2. 格式正确，调用后台接口发送验证码
     * 3. 发送成功开启倒计时
     */
    // const reg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
    const { mobile } = this.data
    // if (!reg.test(mobile)) {
    //   // 提示手机号格式错误
    //   return wx.utils.toast('手机号格式错误', 'error')
    // }
    if (!this.validMobile(mobile)) return
    // 格式正确，就发送验证码 => 传递手机号给后台=》后台发送验证给手机号
    const { data } = await wx.http.get('/code', {
      mobile
    })
    console.log('验证码：', data)
    wx.utils.toast('发送成功')
    // 把获取的验证码显示到输入框=》强调：真实情况用户手机收到，自己输入
    this.setData({
      code: data.code
    })
    // 复制验证码
    // wx.setClipboardData({
    //   data: data.code,
    // });

    // 需求：点击按钮后，开启60s倒计时，60s内不能重复发送
    // 显示倒计时组件：开始倒计时
    this.setData({
      isShow: true
    })
  },
  // 登录
  async login() {
    /**
     * 提交用户的手机号和短信验证码，分成 3 步来实现该功能：
        1. 验证手机号码和验证码
        2. 请求接口完成登录/注册
        3. 重定向登录前原本要访问的页面
     */
    const { mobile, code } = this.data
    if (!this.validMobile(mobile)) return
    if (this.validCode(code) === false) return
    const { data } = await wx.http.post('/login', { mobile, code })
    console.log('token:', data.token)
    console.log('校验通过，调用登录接口')
    // 把token存储到全局
    app.setToken(data.token)
    // 说明：this.redirectUrl存在跳转这个地址，相反跳我的页面
    // const url = this.redirectUrl || '/pages/my/index'
    const url = decodeURIComponent(this.redirectUrl || '/pages/my/index')
    if (this.isTabBar(url)) {
      wx.switchTab({
        url
      });
    } else {
      wx.redirectTo({
        url,
      });
    }



  },
  // 倒计时结束执行
  countFinish() {
    this.setData({
      isShow: false
    })
  }
})
